

#include "include/Grille.h"
#include "include/Transformation.h"
#include "include/GUI/Display.h"
#include "include/GUI/DisplayTerminal.h"
#include <sys/resource.h>



/*
 * permet de génerer un fichier core en cas de crash
 * ce fichier core peut ensuite être analysé par le programmeur avec gdb
 * (ou ddd) afin d'en déterminer la cause
 * precondition : sources compilées avec l'option -ggdb (sinon le fichier core est illisible)
 */	
void MakeCoreIfCrash(){
	struct rlimit rlim;
	if(!getrlimit(RLIMIT_CORE, &rlim) && rlim.rlim_cur != RLIM_INFINITY){
		rlim.rlim_cur = RLIM_INFINITY;
		rlim.rlim_max = RLIM_INFINITY;
		setrlimit(RLIMIT_CORE, &rlim);
	}
}

int main(){
	MakeCoreIfCrash();
	Display* display = new DisplayTerminal();
	Grille* grille = new Grille(7);
	Transformation* trans = new Transformation();
	
	display->Affiche_grille(grille);
	trans->Ajoute_jeton(grille, 3, JOUEUR_1);
	display->Affiche_grille(grille);
	trans->Ajoute_jeton(grille, 3, JOUEUR_2);
	display->Affiche_grille(grille);
	trans->Ajoute_jeton(grille, 2, JOUEUR_1);
	display->Affiche_grille(grille);
	trans->Ajoute_jeton(grille, 6, JOUEUR_2);
	display->Affiche_grille(grille);
	trans->Ajoute_jeton(grille, 3, JOUEUR_1);
	display->Affiche_grille(grille);
	trans->Rotation_quart_de_tour_droite(grille);
	trans->Applique_gravite(grille);
	display->Affiche_grille(grille);	
	trans->Rotation_quart_de_tour_gauche(grille);
	trans->Applique_gravite(grille);
	display->Affiche_grille(grille);
	trans->Rotation_demi_tour(grille);
	trans->Applique_gravite(grille);
	display->Affiche_grille(grille);
	
	delete(display);
	delete(grille);
	delete(trans);

}
